import { getPluginsList } from "./build/plugins";
import { include, exclude } from "./build/optimize";
import AutoImport from "unplugin-auto-import/vite";

import { type UserConfigExport, type ConfigEnv, loadEnv } from "vite";
import {
  root,
  alias,
  warpperEnv,
  pathResolve,
  __APP_INFO__
} from "./build/utils";
// const Url = 'https://api.yciot.fourwell.net'
// const Url = 'https://yc01.tst.fourwell.net'
// const Url = 'http://yc.tst.fourwell.net'
const Url = 'https://yc01.tst.fourwell.net'
// const Url = 'http://192.168.1.149:8088' //航
// const Url = 'http://192.168.1.2:7004'  //浪
// const Url = 'http://192.168.1.62:8088' //钟

export default ({ mode }: ConfigEnv): UserConfigExport => {
  const { VITE_CDN, VITE_PORT, VITE_COMPRESSION, VITE_PUBLIC_PATH } =
    warpperEnv(loadEnv(mode, root));
  return {
    base: VITE_PUBLIC_PATH,
    root,
    resolve: {
      alias
    },
    // // 服务端渲染
    // server: {
    //   // 端口号
    //   port: VITE_PORT,
    //   host: "0.0.0.0",
    //   // 本地跨域代理 https://cn.vitejs.dev/config/server-options.html#server-proxy
    //   proxy: {},
    //   // 预热文件以提前转换和缓存结果，降低启动期间的初始页面加载时长并防止转换瀑布
    //   warmup: {
    //     clientFiles: ["./index.html", "./src/{views,components}/*"]
    //   }
    // },
    server: {
      // 是否开启 https
      // 端口号
      port: VITE_PORT,
      host: "0.0.0.0",
      proxy: {
        "/business": {
          target: Url,
          changeOrigin: true //允许跨域
        },
        "/device": {
          target: Url,
          changeOrigin: true //允许跨域
        },
        "/files": {
          target: Url,
          changeOrigin: true //允许跨域
        },
        "/organize": {
          target: Url,
          changeOrigin: true //允许跨域
        },
        "/system": {
          target: Url,
          changeOrigin: true //允许跨域
        },
        "/supervise": {
          // target: 'https://mockapi.eolink.com/cHgMsmt905cee85bde7d14a0e0e2fd7d333d5fed7514651',
          target: Url,
          changeOrigin: true //允许跨域
        },
        "/screen": {
          // target: 'https://mockapi.eolink.com/cHgMsmt905cee85bde7d14a0e0e2fd7d333d5fed7514651',
          target: Url,
          changeOrigin: true //允许跨域
        },
        "/topo": {
          // target: 'https://mockapi.eolink.com/cHgMsmt905cee85bde7d14a0e0e2fd7d333d5fed7514651',
          target: Url,
          changeOrigin: true //允许跨域
        }
      }
    },
    plugins: [
      getPluginsList(VITE_CDN, VITE_COMPRESSION),
      AutoImport({
        imports: ["vue", "vue-router"],
        dts: true
      })
    ],
    // https://cn.vitejs.dev/config/dep-optimization-options.html#dep-optimization-options
    optimizeDeps: {
      include,
      exclude
    },
    build: {
      // https://cn.vitejs.dev/guide/build.html#browser-compatibility
      target: "es2015",
      sourcemap: false,
      // 消除打包大小超过500kb警告
      chunkSizeWarningLimit: 4000,
      rollupOptions: {
        input: {
          index: pathResolve("./index.html", import.meta.url)
        },
        // 静态资源分类打包
        output: {
          chunkFileNames: "static/js/[name]-[hash].js",
          entryFileNames: "static/js/[name]-[hash].js",
          assetFileNames: "static/[ext]/[name]-[hash].[ext]"
        }
      }
    },
    define: {
      __INTLIFY_PROD_DEVTOOLS__: false,
      __APP_INFO__: JSON.stringify(__APP_INFO__)
    }
  };
};
